To-do List অ্যাপ তৈরি

Mobile App Development - অ্যান্ড্রয়েড ডেভেলপমেন্ট (Android) - Real-world Android Projects
311

একটি To-Do List অ্যাপ একটি সাধারণ কিন্তু অত্যন্ত উপকারী অ্যাপ্লিকেশন, যা ব্যবহারকারীদের দৈনন্দিন কাজগুলো ট্র্যাক এবং ম্যানেজ করতে সহায়তা করে। এই অ্যাপে ব্যবহারকারীরা নতুন টাস্ক তৈরি করতে, টাস্ক সম্পন্ন করতে, এবং টাস্ক মুছে ফেলতে পারবেন।

To-Do List অ্যাপ ডেভেলপমেন্ট

 আমরা Android Studio এবং Room Database ব্যবহার করে একটি To-Do List অ্যাপ তৈরি করার ধাপগুলো আলোচনা করব।


To-Do List অ্যাপের প্রধান ফিচার

  1. Task Creation এবং Deletion: নতুন টাস্ক তৈরি এবং টাস্ক মুছে ফেলার সুবিধা।
  2. Task Completion: প্রতিটি টাস্ক কমপ্লিট করার জন্য চেকবক্স বা সোয়াইপ অপশন।
  3. Task Persistence: টাস্কগুলো ডাটাবেসে সংরক্ষণ করা, যাতে অ্যাপ বন্ধ করলেও ডেটা সংরক্ষিত থাকে।
  4. Filter এবং Sort Options: টাস্কগুলোকে তারিখ বা স্ট্যাটাস অনুসারে ফিল্টার এবং সাজানোর সুবিধা।

অ্যাপ ডেভেলপমেন্টের ধাপ

ধাপ ১: Android Studio তে প্রজেক্ট তৈরি করা

  1. Android Studio তে New Project তৈরি করুন এবং Empty Activity নির্বাচন করুন।
  2. প্রজেক্টের নাম, প্যাকেজ, এবং মডিউল কনফিগার করুন এবং Finish ক্লিক করুন।

ধাপ ২: ডিপেন্ডেন্সি যোগ করা

build.gradle (Module level) ফাইলে নিচের ডিপেন্ডেন্সি যোগ করুন:

// Room Database
implementation 'androidx.room:room-runtime:2.4.2'
kapt 'androidx.room:room-compiler:2.4.2'

// ViewModel এবং LiveData
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'

Room Database ব্যবহার করে ডাটাবেস ম্যানেজ করা হবে এবং ViewModel এবং LiveData ব্যবহার করে ডেটা ম্যানেজ করা হবে।


৩. টাস্ক মডেল এবং ডাটাবেস ডিজাইন

ধাপ ১: টাস্ক মডেল তৈরি করা

@Entity(tableName = "tasks")
data class Task(
    @PrimaryKey(autoGenerate = true) val id: Int = 0,
    val title: String,
    val isCompleted: Boolean = false
)

ধাপ ২: DAO (Data Access Object) তৈরি করা

@Dao
interface TaskDao {
    @Query("SELECT * FROM tasks ORDER BY id ASC")
    fun getAllTasks(): LiveData<List<Task>>

    @Insert
    suspend fun insertTask(task: Task)

    @Update
    suspend fun updateTask(task: Task)

    @Delete
    suspend fun deleteTask(task: Task)
}

ধাপ ৩: Room Database সেটআপ করা

@Database(entities = [Task::class], version = 1)
abstract class TaskDatabase : RoomDatabase() {
    abstract fun taskDao(): TaskDao

    companion object {
        @Volatile
        private var INSTANCE: TaskDatabase? = null

        fun getDatabase(context: Context): TaskDatabase {
            return INSTANCE ?: synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    TaskDatabase::class.java,
                    "task_database"
                ).build()
                INSTANCE = instance
                instance
            }
        }
    }
}

৪. Task Creation এবং Deletion ইমপ্লিমেন্ট করা

ধাপ ১: UI সেটআপ করা

  1. activity_main.xml ফাইলে RecyclerView এবং FloatingActionButton যোগ করুন।
<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recyclerView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"/>

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/addTaskButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="end|bottom"
    android:src="@drawable/ic_add"/>

ধাপ ২: Task Adapter তৈরি করা

TaskAdapter ক্লাস তৈরি করে টাস্কগুলো প্রদর্শন করুন:

class TaskAdapter(private val taskList: List<Task>, private val onTaskClick: (Task) -> Unit) : RecyclerView.Adapter<TaskAdapter.TaskViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TaskViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.task_item, parent, false)
        return TaskViewHolder(view)
    }

    override fun onBindViewHolder(holder: TaskViewHolder, position: Int) {
        val task = taskList[position]
        holder.bind(task)
        holder.itemView.setOnClickListener { onTaskClick(task) }
    }

    override fun getItemCount() = taskList.size

    class TaskViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        fun bind(task: Task) {
            itemView.findViewById<TextView>(R.id.taskTitleTextView).text = task.title
            itemView.findViewById<CheckBox>(R.id.taskCheckBox).isChecked = task.isCompleted
        }
    }
}

ধাপ ৩: Task Creation Activity তৈরি করা

TaskCreationActivity এ টাস্ক তৈরি করার জন্য UI এবং লজিক ইমপ্লিমেন্ট করুন:

class TaskCreationActivity : AppCompatActivity() {
    private lateinit var taskDatabase: TaskDatabase

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_task_creation)

        taskDatabase = TaskDatabase.getDatabase(this)

        saveButton.setOnClickListener {
            val title = taskTitleEditText.text.toString()
            val task = Task(title = title)

            CoroutineScope(Dispatchers.IO).launch {
                taskDatabase.taskDao().insertTask(task)
                finish()
            }
        }
    }
}

৫. Task Display এবং Update ইমপ্লিমেন্ট করা

ধাপ ১: ViewModel তৈরি করা

class TaskViewModel(application: Application) : AndroidViewModel(application) {
    private val taskDao = TaskDatabase.getDatabase(application).taskDao()
    val allTasks: LiveData<List<Task>> = taskDao.getAllTasks()

    fun insert(task: Task) = viewModelScope.launch(Dispatchers.IO) {
        taskDao.insertTask(task)
    }

    fun delete(task: Task) = viewModelScope.launch(Dispatchers.IO) {
        taskDao.deleteTask(task)
    }

    fun update(task: Task) = viewModelScope.launch(Dispatchers.IO) {
        taskDao.updateTask(task)
    }
}

ধাপ ২: MainActivity এ TaskViewModel এবং RecyclerView সেটআপ করা

class MainActivity : AppCompatActivity() {
    private lateinit var taskViewModel: TaskViewModel
    private lateinit var adapter: TaskAdapter

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        taskViewModel = ViewModelProvider(this).get(TaskViewModel::class.java)

        adapter = TaskAdapter(emptyList()) { task ->
            taskViewModel.update(task.copy(isCompleted = !task.isCompleted))
        }
        recyclerView.adapter = adapter
        recyclerView.layoutManager = LinearLayoutManager(this)

        taskViewModel.allTasks.observe(this, Observer { tasks ->
            adapter = TaskAdapter(tasks) { task ->
                taskViewModel.update(task.copy(isCompleted = !task.isCompleted))
            }
            recyclerView.adapter = adapter
        })

        addTaskButton.setOnClickListener {
            val intent = Intent(this, TaskCreationActivity::class.java)
            startActivity(intent)
        }
    }
}

Best Practices for To-Do List App Development

Data Persistence:

  • Room Database ব্যবহার করে ডেটা সংরক্ষণ এবং লোড করুন।

UI Optimization:

  • RecyclerView এবং View Binding ব্যবহার করে UI অপ্টিমাইজ করুন।

User Notifications:

  • Task রিমাইন্ডার সেট করতে AlarmManager এবং WorkManager ব্যবহার করুন।

Testing and Debugging:

  • Espresso এবং JUnit টেস্ট ফ্রেমওয়ার্ক ব্যবহার করে UI এবং লজিকাল টেস্টিং করুন।

উপসংহার

To-Do List অ্যাপ তৈরি করা একটি সহজ এবং কার্যকরী প্রজেক্ট, যা ডেভেলপারদের Android এবং Room Database সম্পর্কে ভালো ধারণা দিতে পারে। সঠিক টুলস এবং Best Practices অনুসরণ করলে ডেভেলপাররা একটি কার্যকরী এবং স্কেলেবল অ্যাপ তৈরি করতে পারেন, যা ব্যবহারকারীদের দৈনন্দিন কাজগুলো সহজে ম্যানেজ করতে সহায়ক।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...